Conventional database systems operate in conjunction with data stored in relational database tables. A data cache may also be provided for storing copies of some or all of the data within instances of object-oriented (e.g., C++) classes. Such instances may be referred to as database objects, and may be stored persistently according to some conventional database systems. An object-oriented class whose instances are stored persistently is called a persistent class, and a persistent database object is an instance of a persistent class.
An SAP liveCache® database instance may provide a data cache of persistent database objects as described above. Such database objects are managed by an Object Management System (OMS). OMS may be implemented as an object-oriented library (i.e., liboms) that is linked to the liveCache kernel. FIG. 1 illustrates elements of conventional liveCache database instance 100.
Application logic is written in object-oriented code and built into application libraries 110 against OMS liboms 120 and kernel 130. Libraries 110 contain routines that may be called as database procedures by external workprocesses. Application libraries 110, OMS liboms 120, and kernel 130 may comprise single “executable” 140 that executes within a common address space.
The routines provided by application libraries 110 create persistent classes and instances (i.e. persistent database objects) thereof. The persistent database objects are stored in database 150 within class-specific object containers 152. As shown in FIG. 1, database 150 may also store Structured Query Language (SQL) data 154 to be accessed by executable 140.
Application libraries 110 include object-oriented header files describing the internal structure of each persistent class represented in object containers 152. Application libraries 110 use the header files to create persistent database objects for storage in object containers 152 and to extract appropriate data from a persistent database object that is retrieved from containers 152 by kernel 130 and OMS 120.
OMS 120 and kernel 130, however, are aware only of a location and size of each persistent database object within object containers 152. As a result, OMS 120 and kernel 130 are unable to query object containers 152 based on content or perform database management functions that require knowledge of the internal structure of the stored database objects. Such functions include, but are not limited to, defining indexes associated with database object members, verifying referential integrity within the database objects, and compressing data storage based on database object members that contain default data values.